package com.atguigu.config;

import com.atguigu.bean.Person;
import com.atguigu.service.PersonService;
import org.springframework.context.annotation.*;
import org.springframework.stereotype.Controller;

import java.util.logging.Filter;

/**
 *
 * 注解测试
 * @author : zjj
 * @date : 2021/9/17 15:34
 */


/**
 * 表明这是一个注解类，类似传统的spring.xml文件
 *
 *
 */
@Configuration
@ComponentScans(
        @ComponentScan(value = "com.atguigu",
                // 排除到  Controller注解的组件
               // excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class})},
                // 包含PersonService类型的组件
                includeFilters = {//@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = {PersonService.class}),
                                    // 使用自定义的过滤规则 ，需要我们自己实现接口
                                    @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {MyTypeFilter.class})
                },
                // 不使用默认的配置规则
                useDefaultFilters = false
        )
)
public class MainConfiguration {

    /**
     * 这里表示往spring 容器中添加一个 Person bean
     * name属性：  表示在容器中的名称
     * value 属性： 表示在容器中的名称
     *
     * @return      值
     */
    @Bean(name = "personTest")
    public Person person(){
        return new Person();
    }
}
